A computing device may be touch-enabled such that a user provides input via touch gestures at a touchscreen of the device. Those familiar with touch-enabled devices will appreciate that a user may execute various functions by performing particular motions on the touchscreen. Examples of touch gestures include a tap gesture, a double-tap gesture, a long press gesture, a scroll gesture, a pan gesture, a flick gesture, a pinch gesture, and so forth. The operating system of the device may interpret the gesture to identify the type of gesture performed, and provide the gesture information to an application at the device. The application may pair a touch gesture with a particular function that executes upon receipt of the touch gesture. In one example, an application may pair a pinch open gesture with a zoom in function and pair a pinch close gesture with a zoom out function. As another example, an application may pair a pan gesture with a pan function that pans the display at the application or device. In these examples, the touch gestures are interpreted and responded to natively by the operating system of the device or an application running locally at the device.
Recent advances in virtualization technology, however, allow touch-enabled computing devices to access virtualized applications operating remotely relative to the device. With this technology, a user may interact with the virtualized application as if it were running natively at the computing device. Many of the virtualized applications may be designed for execution at a desktop computing device in which a user utilizes a pointing device such as a mouse to provide input. A physical pointing device may allow for more precise control and selection at the application. As a result, the graphical user interfaces of these applications may include relatively small icons, menus, and other graphical user interface elements suitable for selection using precision pointing devices.
The touchscreen of a touch-enabled device, however, may not provide the precision necessary to select these relative small graphical user interface elements. Accordingly, one challenge to presenting virtualized applications at a touch-enabled devices involves accurately interpreting a touch gesture to provide a desired response. Another challenge to presenting virtualized applications at a touch-enabled device involves determining whether a touch gesture should be interpreted locally at the native environment or remotely at the virtualized environment. Users may interact with both the native operating system and the virtualized application using touch gestures. In some circumstances, the user may desire the native environment to respond to the touch gesture, while in other circumstances the user may desire the virtualized application to respond to the touch gesture. Some proposed solutions require the user to activate and deactivate gesture modes such that a touch gesture is interpreted locally when one mode is active and interpreted remotely when another mode is active. Such proposed solutions, however, diminish the user experience through the extra effort required to switch between modes.
In view of these challenges, new approaches to interpreting and responding to touch gestures in the virtualization context are needed. In particular, accurately interpreting touch gestures for virtualized applications and distinguishing between for local or remote interpretation are needed.